Interactive input system and method

ABSTRACT

A method of determining locations of at least two pointers in a captured image frame comprises generating a vertical intensity profile (VIP) from the captured image frame, the VIP comprising peaks generally corresponding to the at least two pointers; determining if the peaks are closely spaced and, if the peaks are closely spaced, fitting a curve to the VIP; analyzing the fitted curve to determine peak locations of the fitted curve; and registering the peak locations as the pointer locations.

FIELD OF THE INVENTION

The present invention relates generally to interactive input systems andin particular, to an interactive input system and method.

BACKGROUND OF THE INVENTION

Interactive input systems that allow users to inject input (i.e. digitalink, mouse events etc.) into an application program using an activepointer (e.g. a pointer that emits light, sound or other signal), apassive pointer (e.g. a finger, cylinder or other suitable object) orother suitable input device such as for example, a mouse or trackball,are known. These interactive input systems include but are not limitedto: touch systems comprising touch panels employing analog resistive ormachine vision technology to register pointer input such as thosedisclosed in U.S. Pat. Nos. 5,448,263; 6,141,000; 6,337,681; 6,747,636;6,803,906; 7,232,986; 7,236,162; and 7,274,356 assigned to SMARTTechnologies ULC of Calgary, Alberta, Canada, assignee of the subjectapplication, the entire contents of which are incorporated herein byreference; touch systems comprising touch panels employingelectromagnetic, capacitive, acoustic or other technologies to registerpointer input; laptop and tablet personal computers (PCs); personaldigital assistants (PDAs) and other handheld devices; and other similardevices.

Above-incorporated U.S. Pat. No. 6,803,906 to Morrison et al. disclosesa touch system that employs machine vision to detect pointer interactionwith a touch surface on which a computer-generated image is presented. Arectangular bezel or frame surrounds the touch surface and supportsdigital cameras at its corners. The digital cameras have overlappingfields of view that encompass and look generally across the touchsurface. The digital cameras acquire images from different vantages andgenerate image data. Image data acquired by the digital cameras isprocessed by on-board digital signal processors to determine if apointer exists in the captured image data. When it is determined that apointer exists in the captured image data, the digital signal processorsconvey pointer characteristic data to a master controller, which in turnprocesses the pointer characteristic data to determine the location ofthe pointer in (x, y) coordinates relative to the touch surface usingtriangulation. The pointer coordinates are conveyed to a computerexecuting one or more application programs. The computer uses thepointer location data to update the computer-generated image that ispresented on the touch surface. Pointer contacts on the touch surfacecan therefore be recorded as writing or drawing or used to controlexecution of an application program executed by the computer.

In interactive input systems that employ machine vision technology toregister pointer input, when only a single pointer exists in capturedimage frames, the location of the pointer in (x, y) coordinates relativeto the touch surface can be readily computed using triangulation.However, when multiple pointers exist in captured image frames,computing the positions of the pointers in (x, y) coordinates relativeto the touch surface is more complicated as pointer ambiguity and/orpointer occlusion conditions may exist. For example, when multiplepointers are contacting the input surfaces, there are positions whereone pointer may partially or completely obscure another pointer from theview of an imaging device, giving rise to ambiguity as to the locationof the pointers.

Several approaches for improving detection of multiple pointers ininteractive input systems have been considered. For example, U.S. PatentApplication Publication No. 2008/0143690 to Jang et al. discloses adisplay device comprising a plurality of cameras positioned at thecorners of a touch surface. Each camera takes images of the touchsurface, on which multiple touch locations are present. The image dataare then sent to a signal processor of a control board. The signalprocessor detects the touch locations from the image data of the camerasand the angle of each touch location with respect to each camera andfinds the coordinate of each touch location. During the calculation, theangle measured, which has been distorted by the lens of the camera iscompensated by a look-up-table stored in the control board. Therefore,each location of multi-touch can be accurately detected.

U.S. Patent Application Publication No. 2007/0116333 to Dempski et al.discloses a system and method for determining positions of multipletargets on a touch surface. At least two cameras are positioned at thecorners of the touch surface to acquire images of the multiplesimultaneous targets on the touch surface. The information from thecameras is used to generate possible targets. The possible targetsinclude both “real” targets (a target associated with an actual touch)and “ghost” targets (a target not associated with an actual touch).Using an analysis of tracking a history of previous targets, such asfinding the distance and direction of a present target relative to itsassociated previous target, the real targets are found and the ghosttargets are deleted from the list of the potential targets.

U.S. Patent Application Publication No. 2008/0291164 to Tanaka disclosesa coordinate input apparatus for detecting multiple inputs. A pluralityof sensor units for receiving arrival light detects the light-shieldingranges caused by pointers present on the coordinate input apparatus. Theinformation of each end of the light-shielding ranges, such as thecoordinate and the angle are calculated on the basis of the number ofthe ranges in the respective sensor units. An input transient state inwhich two light-shielding ranges are partially or totally overlapped isdetected. True coordinative values of the pointers are finallydetermined based on a selection of a coordinate-calculation first dataand a coordinate-calculation second data, which is angle information ofthe ends of the light-shielding ranges.

U.S. Patent Application Publication No. 2010/0201812 to McGibney et al.entitled “Active Display Feedback in Interactive Input Systems” filed onFeb. 11, 2009 and assigned to SMART Technologies, ULC, discloses amethod for distinguishing a plurality of pointers in an interactiveinput system and an interactive input system employing the method.During the method, a plurality of potential coordinates for a pluralityof pointers in proximity of an input surface is calculated. Visualindicators associated with each potential coordinate on the inputsurface are displayed and real pointer locations and imaginary pointerlocations associated with each potential coordinate are determined fromthe visual indicators.

U.S. Patent Application Publication No. 2011/0006981 to Chtchetinine etal. entitled “Interactive Input System” filed on Jul. 10, 2009 andassigned to SMART Technologies, ULC, discloses an interactive inputsystem and method for resolving ambiguities between at least twopointers in a plurality of input regions defining an input area. Themethod comprises capturing images of the plurality of input regions, theimages captured by plurality of imaging devices each having a field ofview of at least a portion of the input area, processing image data fromthe images to identify a plurality of targets for the at least twopointers within the input area and analyzing the plurality of targets toresolve a real location associated with each pointer.

Although the above-mentioned interactive input systems allow multiplepointer contacts to be determined, alternative methods to resolvemultiple pointer contacts are desired. It is therefore an object of thepresent invention to provide a novel interactive input system andmethod.

SUMMARY OF THE INVENTION

Accordingly, in one aspect there is provided a method of determininglocations of at least two pointers in a captured image frame, the methodcomprising: generating a vertical intensity profile (VIP) from thecaptured image frame, the VIP comprising peaks generally correspondingto the at least two pointers; determining if the peaks are closelyspaced and, if the peaks are closely spaced: fitting a curve to the VIP;analyzing the fitted curve to determine peak locations of the fittedcurve; and registering the peak locations as the pointer locations.

In one embodiment, if the peaks are determined not to be closely spaced,the method further comprises analyzing the VIP to determine the peaklocations and registering the peak locations as the pointer locations.In one embodiment, the fitting comprises calculating a nonlinear leastsquares fit for at least one model, each model comprising at least twopeaks, each peak having at least one of a respective peak location, arespective peak width and a respective peak amplitude. The nonlinearleast squares fit may comprise any one of a conjugate gradientalgorithm, a Levenberg-Marquardt algorithm, and a nonlinear simplexalgorithm. In a related embodiment, the at least one model comprises aplurality of models, each model in the plurality comprising a differentnumber of peaks. In a this case, the fitting may further comprisecalculating a goodness-of-fit value for each model; calculating anAkaike Information Criterion (AIC) value for each model; and determininga final model by comparing the goodness-of-fit values and the AICvalues, the final model being the fitted curve. The final modeldetermined is the model having at least one of a lowest goodness-of-fitvalue and a lowest AIC value.

In one embodiment, the method further comprises, prior to thedetermining, comparing the VIP to a threshold; and identifying the peaksin the VIP based on the comparing.

In another aspect, there is provided an interactive input system,comprising:at least one imaging assembly capturing image frames of aregion of interest; and processing structure in communication with theat least one imaging assembly, the processing structure being configuredto: generate a vertical intensity profile (VIP) from a captured imageframe, the VIP comprising peaks generally corresponding to locations ofat least two pointers in the captured image frame; and determine if thepeaks are closely spaced, and if the peaks are closely spaced: fit acurve to the VIP; analyze the fitted curve to determine peak locationsof the fitted curve; register the peak locations as the pointerlocations.

In another aspect, there is provided a non-transitory computer readablemedium having embodied thereon a computer program for determininglocations of at least two pointers in a captured image frame, thecomputer program comprising: program code for generating a verticalintensity profile (VIP) from the captured image frame, the VIPcomprising peaks generally corresponding to the at least two pointers;and program code for determining if the peaks are closely spaced and, ifthe peaks are closely spaced: program code for fitting a curve to theVIP; program code for analyzing the fitted curve to determine peaklocations of the fitted curve; and program code for registering the peaklocations as the pointer locations.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments will now be described more fully with reference to theaccompanying drawings in which:

FIG. 1 is a perspective view of an interactive input system;

FIG. 2 is a schematic front elevational view of the interactive inputsystem of FIG. 1;

FIG. 3 is a block diagram of an imaging assembly forming part of theinteractive input system of FIG. 1;

FIG. 4 is a front elevational view of a portion of a bezel segmentforming part of the interactive input system of FIG. 1;

FIG. 5 is a block diagram of a master controller forming part of theinteractive input system of FIG. 1;

FIG. 6 is another perspective view of the interactive input system ofFIG. 1, showing three (3) pointers in proximity therewith;

FIG. 7 is a flowchart showing the steps of a captured image frameprocessing method used by the interactive input system of FIG. 1;

FIG. 8 is a graphical plot of a vertical intensity profile (VIP)generated from a captured image frame in which the three pointers ofFIG. 6 are imaged;

FIG. 9 is a flowchart showing the steps of a peak location method usedby the interactive input system of FIG. 1;

FIG. 10 is a graphical plot of a combination function fitted to two (2)exemplary, partially overlapping functions;

FIG. 11 is a flowchart showing the steps of a VIP curve fitting methodused in the peak location method of FIG. 9;

FIG. 12 is a flowchart showing the steps of a conjugate gradient leastsquares fit process of the VIP curve fitting method of FIG. 11;

FIG. 13 is a perspective view of another embodiment of an interactiveinput system;

FIG. 14 is graphical plot of a curve fitted to an exemplary VIPcomprising two (2) generally non-overlapping peaks, using the VIP curvefitting method of FIG. 11;

FIG. 15 is a graphical plot of a curve fitted to an exemplary VIPcomprising two (2) partially overlapping peaks, using the VIP curvefitting method of FIG. 11;

FIG. 16 is a graphical plot of a curve fitted to an exemplary VIPcomprising three (3) generally non-overlapping peaks, using the VIPcurve fitting method of FIG. 11;

FIG. 17 is a graphical plot of a curve fitted to an exemplary VIPcomprising three (3) partially overlapping peaks, using the VIP curvefitting method of FIG. 11; and

FIG. 18 is a graphical plot of a curve fitted to the exemplary VIP shownin FIG. 17, using the VIP curve fitting method of FIG. 11 for which atwo-peak model is used.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Turning now to FIGS. 1 and 2, an interactive input system that allows auser to inject input such as digital ink, mouse events, commands etc.into an application program is shown and is generally identified byreference numeral 20. In this embodiment, interactive input system 20comprises an assembly 22 that engages a display unit (not shown) such asfor example, a plasma television, a liquid crystal display (LCD) device,a flat panel display device, a cathode ray tube etc. and surrounds thedisplay surface 24 of the display unit. The assembly 22 employs machinevision to detect pointers brought into a region of interest in proximitywith the display surface 24 and communicates with at least one digitalsignal processor (DSP) unit 26 via communication lines 28. Thecommunication lines 28 may be embodied in a serial bus, a parallel bus,a universal serial bus (USB), an Ethernet connection or other suitablewired connection. The DSP unit 26 in turn communicates with a generalpurpose computing device 30 executing one or more application programsvia a USB cable 32. Alternatively, the DSP unit 26 may communicate withthe computing device 30 over another wired connection such as forexample, a parallel bus, an RS-232 connection, an Ethernet connectionetc. or may communicate with the computing device 30 over a wirelessconnection using a suitable wireless protocol such as for exampleBluetooth, WiFi, ZigBee, ANT, IEEE 802.15.4, Z-Wave etc. Computingdevice 30 processes the output of the assembly 22 received via the DSPunit 26 and adjusts image data that is output to the display unit sothat the image presented on the display surface 24 reflects pointeractivity. In this manner, the assembly 22, DSP unit 26 and computingdevice 30 allow pointer activity proximate to the display surface 24 tobe recorded as writing or drawing or used to control execution of one ormore application programs executed by the computing device 30.

Assembly 22 comprises a frame assembly that is integral with or attachedto the display unit and surrounds the display surface 24. Frame assemblycomprises a bezel having three bezel segments 40 to 44, four cornerpieces 46 and a tool tray segment 48. Bezel segments 40 and 42 extendalong opposite side edges of the display surface 24 while bezel segment44 extends along the top edge of the display surface 24. The tool traysegment 48 extends along the bottom edge of the display surface 24 andsupports one or more pen tools P and an eraser tool (not shown). Thecorner pieces 46 adjacent the top left and top right corners of thedisplay surface 24 couple the bezel segments 40 and 42 to the bezelsegment 44. The corner pieces 46 adjacent the bottom left and bottomright corners of the display surface 24 couple the bezel segments 40 and42 to the tool tray segment 48. In this embodiment, the corner pieces 46adjacent the bottom left and bottom right corners of the display surface24 accommodate imaging assemblies 60 that look generally across theentire display surface 24 from different vantages. The bezel segments 40to 44 are oriented so that their inwardly facing surfaces are seen bythe imaging assemblies 60.

Turning now to FIG. 3, one of the imaging assemblies 60 is betterillustrated. As can be seen, the imaging assembly 60 comprises an imagesensor 70 such as that manufactured by Micron under model No. MT9V022fitted with an 880 nm lens of the type manufactured by Boowon undermodel No. BW25B. The lens has an IR-pass/visible light blocking filterthereon (not shown) and provides the image sensor 70 with a 98 degreefield of view so that the entire display surface 24 is seen by the imagesensor 70. The image sensor 70 is connected to a connector 72 thatreceives one of the communication lines 28 via an I²C serial bus. Theimage sensor 70 is also connected to an electrically erasableprogrammable read only memory (EEPROM) 74 that stores image sensorcalibration parameters as well as to a clock (CLK) receiver 76, aserializer 78 and a current control module 80. The clock receiver 76 andthe serializer 78 are also connected to the connector 72. Currentcontrol module 80 is also connected to an infrared (IR) light source 82comprising one or more IR light emitting diodes (LEDs) or other suitableradiation source(s) that provide illumination to the region of interest,a power supply 84 and the connector 72.

The clock receiver 76 and serializer 78 employ low voltage, differentialsignaling (LVDS) to enable high speed communications with the DSP unit26 over inexpensive cabling. The clock receiver 76 receives timinginformation from the DSP unit 26 and provides clock signals to the imagesensor 70 that determines the rate at which the image sensor 70 capturesand outputs image frames. Each image frame output by the image sensor 70is serialized by the serializer 78 and output to the DSP unit 26 via theconnector 72 and communication lines 28.

FIG. 4 shows a portion of the inwardly facing surface 100 of one of thebezel segments 40 to 44. As can be seen, the inwardly facing surface 100is divided into a plurality of generally parallel, longitudinallyextending strips or bands, each band of which has a different opticalproperty. In this embodiment, the inwardly facing surface 100 of thebezel segment is divided into two (2) bands 102 and 104. The band 102nearest the display surface 24 is formed of a retro-reflective materialand the band 104 furthest from the display surface 24 is formed of aninfrared (IR) radiation absorbing material. To take best advantage ofthe properties of the retro-reflective material, the bezel segments 40to 44 are oriented so that their inwardly facing surfaces extend in aplane generally normal to that of the display surface 24.

Turning now to FIG. 5, the DSP unit 26 is better illustrated. As can beseen, DSP unit 26 comprises a controller 120 such as for example, amicroprocessor, microcontroller, DSP etc. having a video port VPconnected to connectors 122 and 124 via deserializers 126. Thecontroller 120 is also connected to each connector 122, 124 via an I²Cserial bus switch 128. I²C serial bus switch 128 is connected to clocks130 and 132, each clock of which is connected to a respective one of theconnectors 122, 124. The controller 120 communicates with an externalantenna 136 via a wireless receiver 138, a USB connector 140 thatreceives USB cable 32 and memory 142 including volatile and non-volatilememory. The clocks 130 and 132 and deserializers 126 similarly employlow voltage, differential signaling (LVDS).

The computing device 30 in this embodiment is a personal computer orother suitable processing device comprising, for example, a processingunit, system memory (volatile and/or non-volatile memory), othernon-removable or removable memory (eg. a hard disk drive, RAM, ROM,EEPROM, CD-ROM, DVD, flash memory, etc.) and a system bus coupling thevarious computer components to the processing unit. The computer mayalso comprise a network connection to access shared or remote drives,one or more networked computers, or other networked devices.

During operation, the controller 120 conditions the clocks 130 and 132to output clock signals that are conveyed to the imaging assemblies 60via the communication lines 28. The clock receiver 76 of each imagingassembly 60 uses the clock signals to set the frame rate of theassociated image sensor 70. In this embodiment, the controller 120generates clock signals so that the frame rate of each image sensor 70is twice the desired image frame output rate. The controller 120 alsosignals the current control module 80 of each imaging assembly 60 overthe I²C serial bus. In response, each current control module 80 connectsthe IR light source 82 to the power supply 84 and then disconnects theIR light source 82 from the power supply 84 so that each IR light source82 turns on and off. The timing of the on/off IR light source switchingis controlled so that for each pair of subsequent image frames capturedby each image sensor 70, one image frame is captured when the IR lightsource 82 is on and one image frame is captured when the IR light source82 is off.

When the IR light sources 82 are on, the IR light sources flood theregion of interest over the display surface 24 with infraredillumination. Infrared illumination that impinges on the IR radiationabsorbing bands 104 of the bezel segments 40 to 44 is not returned tothe imaging assemblies 60. Infrared illumination that impinges on theretro-reflective bands 102 of the bezel segments 40 to 44 is returned tothe imaging assemblies 60. The configuration of each IR light source 82is selected so that the retro-reflective bands 102 are generally evenlyilluminated over their entire lengths. Exemplary IR light sourceconfigurations to achieve generally even bezel illumination aredescribed in U.S. Patent Application Publication No. 2009/0278795 toHansen et al. entitled “Interactive Input System And IlluminationAssembly Therefor” filed on May 9, 2008 and assigned to SMARTTechnologies ULC, the entire content of which is incorporated herein byreference. Of course, those of skill in the art will appreciate thatother illumination techniques may be employed. As a result, in theabsence of a pointer such as for example, a user's finger, a cylinder orother suitable object, a pen tool P or eraser tool, the image sensor 70of each imaging assembly 60 sees a bright band having a substantiallyeven intensity over its length disposed between an upper dark bandcorresponding to the IR radiation absorbing bands 104 and a lower darkband corresponding to the display surface 24. When a pointer is broughtinto proximity with the display surface 24 and is sufficiently distantfrom the IR light sources 82, the pointer occludes infrared illuminationreflected by the retro-reflective bands 102. As a result, the pointerappears as a dark region that interrupts the bright band in capturedimage frames.

As mentioned above, each image frame output by the image sensor 70 ofeach imaging assembly 60 is conveyed to the DSP unit 26. In thisembodiment, when the DSP unit 26 receives image frames from the imagingassemblies 60, the controller 120 processes only the image framescaptured when the IR light sources 82 are on to detect the existence ofa pointer therein and if a pointer exists, to determine the position ofthe pointer relative to the display surface 24 using triangulation.

As will be appreciated, if only a single pointer is in proximity withthe display surface 24, then the position of the pointer relative to thedisplay surface 24 can be readily determined based on the location ofthe single pointer appearing in the captured image frames. However, ifmultiple pointers are in proximity with the display surface 24,determining the positions of the pointers appearing in captured imageframes can be less straightforward. For example, FIG. 6 illustrates ascenario in which three (3) pointers have been brought into contact withthe display surface 24. Depending on the spacing of the pointers, eachof the three pointers can partially or completely occlude anotherpointer from the view of an image sensor 70 resulting in pointerambiguity.

To resolve such pointer ambiguity, the interactive input system 20 usesan image frame processing method shown in FIG. 7 and generally indicatedusing reference numeral 200. In this embodiment, image frame processingmethod 200 is carried out by the controller 120 which processessuccessive captured image frames output by the image sensor 70 of eachimaging assembly 60. For each imaging assembly 60, when an image framethat has been captured when the IR light sources 82 are on is received,the controller 120 stores the image frame in a buffer (step 202). Thecontroller 120 then divides the captured image frame by a meanbackground image stored in memory to form a background-removed imageframe (step 204). At this step, the intensity value of each pixel of thecaptured image frame is divided by the intensity value of acorresponding pixel of the mean background image frame and, followingthis division, any intensity values greater than one (1) are set to one(1). In this embodiment, the mean background image frame is generated byaveraging ten (10) frames captured when the light sources 82 are on, andwhen no pointer is present. The intensity value of each pixel of thebackground-removed image frame, which has a value that lies in the rangefrom 0 to 1, is then subtracted from a value of one (1) to yield adifference image frame (step 206).

Once the difference image frame has been calculated, the controller 120generates a vertical intensity profile (VIP) for each pixel column ofthe difference image frame (step 208). Approaches for generating VIPsare described in U.S. Patent Application Publication No. 2009/0277697 toBolt et al., and assigned to SMART Technologies ULC of Calgary, Alberta,the content of which is incorporated herein by reference in itsentirety. In this embodiment, the VIP is generated by first cropping thedifference image frame to reduce its size from 752×480 pixels to 752×60pixels and to center the cropped difference image frame along the lengthof the bright band in the cropped difference image frame. The controller120 then calculates an average intensity value of the sixty (60) pixelsin each of the 752 pixel columns of the cropped difference image frame.As will be understood, pixel columns corresponding to non-occluded areasof the retro-reflective bands 102 will have a low average intensityvalue, while pixel columns corresponding to occluded areas of theretro-reflective bands 102 will have a high average intensity value.These 752 average intensity values are then represented as a function ofpixel column position, x, to yield the VIP. FIG. 8 shows an exemplaryVIP based on an image frame of the three (3) pointers shown in FIG. 6captured by the imaging assembly 60 indicated therein. The VIP of FIG. 8comprises three peaks that partially overlap, with each of the peakscorresponding to a respective one of the pointers.

Once the VIP has been generated, the values of the VIP are compared to athreshold value (step 210). In this embodiment, the threshold value hasa value of 0.5. Based on this comparison, the controller 120 generates abox-car plot C(x) having a value of one (1) for each set of one or moreconsecutive VIP data points above the threshold value, and a value ofzero (0) for VIP data points below the threshold value. As will beunderstood, the width of a box-car peak in the box-car plot C(x)generally corresponds to the width of a corresponding peak in the VIP.The controller 120 then calculates the center value (x_(cen)) of eachbox-car peak, and identifies each box-car peak of the box-car plot C(x)by assigning a unique number thereto. Each corresponding peak in the VIPis then labeled with its assigned unique number at the respectivecalculated center value x_(cen) (step 212).

To more accurately resolve VIP peaks that are closely spaced, thecontroller 120 uses a peak location method as shown in FIG. 9 andgenerally indicated by reference numeral 300. During this method, once agenerated VIP has been labeled (step 302), the labeled VIP is firstanalyzed to determine if one or more peaks exist therein (step 304). Ifthe labeled VIP has only one peak, the controller 120 registers thecenter value x_(cen) of the box-car peak as the pointer location (step310). However, if the labeled VIP has more than one peak, the box-carplot C(x) is analyzed to determine if the box-car peaks are closelyspaced (step 306). In this embodiment, the smallest spacing between thebox-car peaks is compared to a threshold spacing value. If the smallestspacing is greater than the threshold spacing value, the peaks aredetermined not to be closely spaced. In this case, the controller 120registers the center values x_(cen) of the box-car peaks as the pointerlocations (step 310). At step 306, if the box-car peaks are determinedto be closely spaced, the labeled VIP is subjected to a VIP curvefitting method (step 308), as will be described below.

As will be appreciated, fitting a curve to a series of data pointscomprising two or more peaks, such as the VIP shown in FIG. 8, may benon-trivial. For example, it may not be possible to accurately representa VIP comprising a plurality of peaks simply by summing two or morefunctions. A more accurate approach involves analysis of apoint-by-point maximum of the VIP as a function of position x. If f(x)and g(x) are functions, each representing a respective VIP generatedfrom an image of two pointers seen at finite resolution, then thecombined VIP function is given by:

max([f(x_(o), w, σ), g(x_(o), w, σ)])   (1)

where x_(o) is the location of each peak, w is the intrinsic half-widthof each respective VIP function, and a is the instrument profile width,the value of which is known for each image sensor 70.

The individual VIP functions f(x) and g(x) are proportional to the errorfunction erf(x). The VIP may be parameterized as:

$\begin{matrix}{\frac{1}{2} \cdot \left( {{{erf}\left( \frac{x + w}{\sqrt{2}\sigma} \right)} - {{erf}\left( \frac{x - w}{\sqrt{2}\sigma} \right)}} \right)} & (2)\end{matrix}$

An adjustable parameter A accounting for amplitude may also beintroduced.

FIG. 10 is a graphical plot of a combination function fitted to twoexemplary, partially overlapping VIP functions f(x) and g(x) using thepoint-by-point maximum approach. The solid and dash-dot lines representthe individual VIP functions f(x) and g(x), respectively. The dashedline represents the combination function max(f, g), which has beenvertically shifted for clarity.

The point-by-point maximum approach is suitable for fitting curves toVIPs comprising two or more peaks. For a VIP comprising three peaks, anappropriate combination function is given by:

max([f(x_(o), w, σ), g(x_(o), w, σ), h(x_(o), w, σ)])   (3)

Similarly, for a VIP comprising an arbitrary number of peaks, anappropriate combination function is:

max([f(x_(o), w, σ), g(x_(o), w, σ), h(x_(o), w, σ), . . . ])   (4)

A nonlinear least squares algorithm is used to fit the combinationfunction to the VIP. In this embodiment, the nonlinear least squaresalgorithm that is employed is the conjugate gradient algorithm, which isdescribed in “Inverse Problem Theory and Methods for Model ParameterEstimation”, authored by Tarantola, published by the Society forIndustrial and Applied Mathematics, Philadelphia, U.S.A., 2005, pages217-218. The conjugate gradient algorithm is recognized as an efficientapproach for solving nonlinear least squares problems, and generallyrequires fewer computational resources than other approaches.

The quality of a least squares fit, or the “goodness-of-fit”, χ_(v) ²,is given by:

$\begin{matrix}{x_{v}^{2} = {\frac{1}{N - M} \cdot {\sum\limits_{i = 1}^{N}\; \frac{\left( {y_{i} - {F\left( {x_{i},a_{1},a_{2},\ldots}\mspace{14mu} \right)}} \right)^{2}}{\sigma_{i}^{2}}}}} & (5)\end{matrix}$

where N is the number of data points (x_(i), y_(i)) of the VIP data,i=1, . . . N, M is the number of parameters a_(j), j=1, . . . M,defining the model function F(x_(i), a₁, a₂, . . . ), and σ_(i) is theerror for each data point (x_(i), y_(i)). In this embodiment, theparameters a_(j) are the peak location x_(on), the width w_(n) and theamplitude A_(n) of each of the n VIP peaks, and the instrumental profilewidth σ.

As will be understood, the cumulative value of σ_(i) for all data pointsis generally indicative of the noise in the data. For simplicity, it maybe assumed that noise is negligible and σ_(i)=1 for all data points,upon which the quality of a least squares fit χ_(v) ² is given by:

$\begin{matrix}{x_{v}^{2} = {\frac{1}{N - M} \cdot {\sum\limits_{i = 1}^{N}\; \left( {y_{i} - {F\left( {x_{i},a_{1},a_{2},\ldots}\mspace{14mu} \right)}} \right)^{2}}}} & \left( {5\; a} \right)\end{matrix}$

As is known in the art, a value of χ_(v) ² near or equal to 1 obtainedusing equation (5) generally represents a “good” fit. However, under theassumption of σ_(i)=1, a generally small value of χ_(v) ² obtained usingequation (5a) represents a “good fit”.

The result of the conjugate gradient algorithm is a set of best-fitparameters, namely the peak locations x_(on), the half widths w_(n), andthe amplitudes A_(n) of each of the n peaks, and the instrumentalprofile width σ. A general goal of the algorithm is to determine a“best” model, so as to establish the number of peaks that “best” fit thedata.

To accurately identify the number of peaks present in a VIP, it isnecessary not only to use the χ_(v) ² goodness-of-fit measure forevaluating fit, but also to determine if the correct model has beenused, such as for example a two-peak model versus a three-peak model. Aswill be understood, there are six parameters for a two-peak VIP model,namely peak locations x_(o1), x_(o2), widths w₁, w₂, and amplitudes A₁and A₂, and there are nine parameters for a three-peak VIP model, namelypeak locations x_(o1), x_(o2), x_(o3), widths w₁, w₂, w₃, and amplitudesA₁, A₂ and A₃. A measure of whether the correct model has been used isprovided by the Akaike Information Criterion (AIC). The AIC is describedin “Information-based Inversion and Processing with Application”,authored by Ulrych and Sacchi, published in the Handbook of GeophysicalExploration, Section I, Seismic exploration, vol. 36, 2005, pages146-149. For the case of normally-distributed observation errors, theAIC is given by:

AIC(k)=N·log(s _(k) ²)+2·k   (6)

where N is the number of data points being fitted, k is the number ofparameters used in a particular model which, for two- and three-peak VIPfunctions are six and nine, respectively, and s_(k) ² is the mean squarevalue of the fit residuals, given by:

$\begin{matrix}{s_{k}^{2} = {\frac{1}{N} \cdot {\sum\limits_{i = 1}^{N}\; \left( {{Obs} - {Cal}} \right)^{2}}}} & (7)\end{matrix}$

where Obs is the observed or experimental image data value, and Cal isthe value calculated using the curve fitting method described herein.When comparing different curve fits to a given data set, the curve fityielding the lowest value of AIC is deemed to be the correct fit.

FIG. 11 is a flowchart showing the steps performed during the VIPcurve-fitting method used in step 308 referred to above. The VIPcurve-fitting method 308 comprises four steps, namely generatingdifferent models each having a different number of peaks (step 408),performing the conjugate gradient least squares fit for each model (step410), computing the AIC for each model (step 412), and comparing the AICvalues of the different models to find a final correct model (step 414).

In step 408, a group of models are generated, each model having adifferent number of peaks. In this embodiment, a total of three modelsare generated, namely a first model having one fewer peak than thatdetermined following the VIP thresholding step (step 210), a secondmodel having the same number of peaks as that determined from the VIPthresholding step, and a third model having one greater number of peaksthan that determined from the VIP thresholding. Of course, it will beunderstood that the variety of models generated is not limited to theconfiguration described herein and that in other embodiments, othermodels may be generated. Each generated model comprises an initial setof parameters for peak locations x_(on), peak half widths w_(n), andpeak amplitudes A_(n) for the number n peaks used in the model.

A conjugate gradient least squares fit is then performed for each model.FIG. 12 shows the steps in the conjugate gradient least squares fitprocess that are carried out in step 410. First, for each model, allmodel and algorithm parameters are initialized (step 502). In thisembodiment, the model parameters comprise an initial set of parametersfor the model, and the algorithm parameters comprise finite-differenceintervals, VIP data, and a prior model covariance matrix. The currentmodel is then computed, and the fit residuals, which are the differencesbetween the computed values and the original observed values, arecalculated (step 506). A current sum of squares is then computed basedon the residuals. A least squares design matrix is then generated fromforward finite-difference derivatives of the model function (step 508).A steepest-ascent vector is then computed using the least squares designmatrix (step 510). As will be understood by those of skill in the art,the steepest-ascent vector is the vector in the parameter space thatpoints in a direction having the greatest change in the sum of squares.Next, the weak line search parameter is computed based on thesteepest-ascent vector (step 512). The principles of weak line searchand steepest-ascent vector are described in modern texts on optimizationsuch as, for example, “Practical Optimization”, authored by Gill, Murrayand Wright, published by Springer, New York, U.S.A., 1982. Followingstep 512, the model parameters are then updated using the weak linesearch parameter and the steepest-ascent vector (step 514). Aconvergence test is then performed (step 516). If the difference betweenthe current sum of squares and the previous sum of squares is less thana first threshold, and if the norm of the steepest-ascent vector is lessthan a second threshold, then the solution is declared to have convergedand the process proceeds to step 412. Otherwise, the process returns tostep 506.

Following the conjugate gradient least squares fit at step 410, AICvalues are then calculated for each of the different model functionsusing the fit residuals (step 412). A final “best” model is then decidedbased on a comparison of the AIC values (step 414), whereby the modelhaving the lowest value of AIC is adopted as the Final fit. Here, thefinal values of the parameters for each peak of the VIP, namely the peaklocation x_(o), width w and amplitude A, are determined. In thisembodiment, in this step the mean and median of the fit residuals areexamined for possible systematic errors. If no systematic errors arefound, and turning again to FIG. 9, the controller 120 then registersthe values of the peak locations x_(o) as the pointer locations (step310).

Following step 310, the controller 120 uses the registered peaklocations to calculate the position of each of the pointers in (x,y)coordinates relative to the display surface 24 using triangulation inthe well known manner, such as that described in above-incorporated U.S.Pat. No. 6,803,906 to Morrison et al. (step 311).

The pointer coordinates determined in step 311 are then analyzed todetermine if an ambiguity exists (step 312). If an ambiguity isdetermined to exist, the pointer coordinates are then subjected to anambiguity removal process (step 314). Ambiguity identification andremoval methods are disclosed previously in U.S. Patent AppplicationPublication No. 2010/0201812 to McGibney et al. entitled “Active DisplayFeedback in Interactive Input Systems” filed on Feb. 11, 2009 andassigned to SMART Technologies, ULC, the content of which is hereinincorporated by reference in its entirety. In this embodiment, theambiguity removal process of step 314 yields new pointer coordinates,which are then subjected to ambiguity determination in step 312. If noambiguity is determined to exist in step 312, the pointer coordinatesare registered for further processing (step 316). Here, the calculatedpointer coordinates are conveyed by the controller 120 to the computingdevice 30 via the USB cable 32. The computing device 30 in turnprocesses the received pointer coordinates and updates the image outputprovided to the display unit, if required, so that the image presentedon the display surface 24 reflects the pointer activity. In this manner,pointer interaction with the display surface 24 can be recorded aswriting or drawing or used to control execution of one or moreapplication programs running on the computing device 30.

Although in the above description the pointers are described as beingpassive pointers, active pointers can also be used. When one or moreactive pointers, such as one or more pen tools P, are in proximity withthe interactive surface the IR light sources 82 remain off. As a result,active pointers appear as bright regions in otherwise dark image frames.These image frames are processed to obtain negative image frames, whichare then further processed using the methodologies described above.

The VIP curve fitting method described above is not limited for use ininteractive input system 20, and may alternatively be used in otherinteractive input systems such as those that comprise more than twoimaging assemblies in order to more accurately determine the locationsof multiple pointers using triangulation. FIG. 13 shows anotherembodiment of an interactive input system in the form of a touch table,and which is generally indicated by reference numeral 620. Interactiveinput system 620 is generally similar to that described in U.S. PatentApplication Publication No. 2011/0006981 to Chtchetinine et al. entitled“INTERACTIVE INPUT SYSTEM” filed on Jul. 10, 2009, assigned to SMARTTechnologies, ULC, the content of which is incorporated herein byreference in its entirety. Interactive input system 620 comprises six(6) imaging assemblies 670 a to 670 f positioned about the periphery ofthe input area 662, and which look generally across the input area 662.An illuminated bezel 672 surrounds the periphery of the input area 662and generally overlies the imaging assemblies 670 a to 670 f.Illuminated bezels are described in U.S. Pat. No. 6,972,401 to Akitt etal., entitled “ILLUMINATED BEZEL AND TOUCH SYSTEM INCORPORATING THESAME”, assigned to SMART Technologies, ULC, the content of which isherein incorporated by reference in its entirety. The illuminated bezel672 provides backlight illumination into the input area 662. To improvethe accuracy of detection of multiple targets, processing structure ofinteractive input system 620 utilizes the VIP curve-fitting methoddescribed above with reference to FIGS. 11 and 12, together with aweight matrix method disclosed in PCT Application No. PCT/CA2010/001085to Chtchetinine et al. entitled “INTERACTIVE INPUT SYSTEM AND METHOD”filed on Jul. 12, 2010, assigned to SMART Technologies, ULC, the contentof which is incorporated herein by reference in its entirety.

Although in embodiments described above the nonlinear least squaresalgorithm is a conjugate gradient algorithm, in other embodiments, othernonlinear least squares algorithms may alternatively be used. Forexample, the nonlinear least squares algorithm may be any of aLevenberg-Marquardt algorithm and a nonlinear simplex algorithm.

It will be understood that the VIP need not be generated using theapproaches described above, and in other embodiments, other approachesmay alternatively be used to generate the VIP, such as those describedin the above-incorporated U.S. Patent Application Publication No.2009/0277697 to Bolt et al.

The VIP processing methodologies described above may be embodied in acomputer program comprising program modules including routines, objectcomponents, data structures, and the like, and may be embodied ascomputer readable program code stored on a non-transitory computerreadable medium. The computer readable medium is any data storage devicethat can store data. Examples of computer readable media comprise forexample read-only memory, random-access memory, CD-ROMs, magnetic tape,USB keys, flash drives and optical data storage devices. The computerreadable program code can also be distributed over a network includingcoupled computer systems so that the computer readable program code isstored and executed in a distributed fashion.

EXAMPLES

The following examples illustrate various applications of theabove-described systems and methods. For all of these examples, imageframes were captured using image sensors 70 configured using settingssummarized in Table 1 below:

TABLE 1 Parameter Brightness 156 Exposure 57 Shutter speed (ms) 2.59Gain (dB) 0.0 Frame rate (Hz) 59.36 Image size (pixels) 752 × 20Here, “Brightness” is the level of black in an image frame, where a highbrightness value corresponds to a low amount of black in the imageframe; “Exposure” corresponds to the average gray level intensity of theimage frame, and has a value between 0 and 255; and “Gain” is the amountof amplification applied to each pixel, wherein an increase in “Gain”results in a brighter image and an increase in noise.

Each captured image frame was first processed by dividing by a meanbackground image frame. The VIP was then generated from the processedcaptured image frame.

FIGS. 14 to 18 are graphical plots showing curves fitted to exemplaryVIPs. In these Figures, each VIP is indicated by dots, the fitted curveis indicated by a solid line, the peak locations are indicated by boxes,and the fit residuals are indicated by crosses. The fit residuals havebeen vertically shifted downward for clarity by 0.1 units.

FIGS. 14 and 15 show curves fitted to VIPs comprising two peaks, and inwhich the peaks are separate and partially overlapping, respectively.The results of the curve fitting method for each of these VIPs are shownin Table 2:

TABLE 2 Parameter FIG. 14 FIG. 15 x₁ (pixels) 516.09 ± 0.04  516.98 ±0.09  w₁ (pixels)  5.74 ± 0.05  6.2 ± 0.01 A₁ 0.588 ± 0.05 0.617 ± 0.09x₂ (pixels) 546.13 ± 0.04  526.92 ± 0.09  w₂ (pixels)  3.85 ± 0.06  4.2± 0.01 A₂ 0.643 ± 0.09  0.65 ± 0.02 σ_(IP) (pixels) 2.75 (fixed) 2.75(fixed) χ_(v) ² 0.0001488 0.0004596 AIC, k = 6 −619.983 −524.554 Meanresidual −0.0076 −0.0093 RMS error ±0.021 ±0.026

As may be seen in Table 2, the mean residual value for both FIGS. 14 and15 are generally near the value of −0.1, indicating that the true valueof the residuals is generally near a value of 0 when vertical shiftingis considered. For FIG. 14, the mean residual value is −0.0076 while thevalue of root-mean-square (RMS) error of a single data point, whichgenerally represents the standard deviation of the residuals, is+/−0.021, and wherein the units of these values are those of the VIPdata. Similarly, for FIG. 15, the mean residual value is −0.0093 whilethe RMS error of a single data point is +/−0.026. As will be understood,these values are generally low and therefore indicate that both fits aresatisfactory. Computed errors for each of the calculated parameters arealso shown in Table 2. As may be seen, all of the computed errors aregenerally low. For example, the computed error value for peak locationx₁=516.09 in FIG. 14 is ±0.04 pixels, which generally means that thesame fit will be generated even in view of an uncertainty of ±0.04pixels in this peak location. This computed error value mayalternatively be regarded as the determination of the peak location towithin a range of values from 516.05 to 516.13. As will be appreciated,the relative narrowness of this range is indicative of the high accuracyof the curve fitting method.

FIGS. 16 and 17 show curves fitted to VIPs comprising three peaks, andin which the peaks are separate and partially overlapping, respectively.The results of the curve fitting method for each of these cases areshown in Table 3:

TABLE 3 Parameter FIG. 16 FIG. 17 x₁ (pixels) 446.31 ± 0.05  446.8 ±0.01  w₁ (pixels) 4.73 ± 0.07  5.1 ± 0.02 A₁ 0.596 ± 0.08  0.62 ± 0.01x₂ (pixels) 464.54 ± 0.05  463.7 ± 0.01  w₂ (pixels) 4.99 ± 0.06  5.7 ±0.01 A₂ 0.630 ± 0.08  0.65 ± 0.01 x₃ (pixels) 479.75 ± 0.05  455.0 ±0.02  w₃ (pixels) 3.37 ± 0.09  4.4 ± 0.03 A₃ 0.62 ± 0.01 0.65 ± 0.02σ_(IP) (pixels) 2.70 (fixed) 2.70 (fixed) χ_(v) ² 0.0002634 0.0008110AIC, k = 9 −626.204 −461.415 Mean residual 0.0065 −0.0051 RMS error±0.016 ±0.028

For FIG. 16, the mean residual and RMS error values are 0.0065 and+/−0.016, respectively. For FIG. 17, the mean residual and RMS errorvalues are −0.0051 and +/−0.028, respectively. The results of the curvefitting method are shown in Table 4. As in the case FIGS. 14 and 15,these values are generally low and therefore indicate that both fits arevery satisfactory.

As described above, the AIC algorithm may be used to determine if thecorrect model has been chosen. The value of the AIC is different fordifferent models and, for a given VIP data set, the correct model isthat having the lowest value of AIC. FIG. 18 shows a different curverepresenting a two-peak model fitted to the VIP data of FIG. 17. Theresults of the curve fitting method using a different model are shownbelow in Table 4:

TABLE 4 Parameter FIG. 18 x₁ (pixels) 448.8 ± 0.2  w₁ (pixels) 7.4 ± 0.2A₁ 0.60 ± 0.01 x₂ (pixels) 462.1 ± 0.1  w₂ (pixels) 7.6 ± 0.2 A₂ 0.62 ±0.01 σ_(IP) (pixels) 2.75 (fixed) χ_(v) ² 0.0009093 AIC, k = 6 −456.478Mean residual −0.0028 RMS error ±0.030

A comparison of results obtained using the three-peak fit model of FIG.17, shown in Table 3, and the two-peak fit model of FIG. 18, shown inTable 4, reveals little difference between the residuals for each ofthese models. Therefore, both models fit the original image datagenerally well. However, the AIC value for FIG. 16 is −461.415, which islower than the AIC value for FIG. 18 of −456.478. Similarly, the reducedchi-squared χ_(v) ² value of FIG. 17 is lower than that of FIG. 18.These results indicate that the three-peak model is a better fit thanthe two-peak model, which generally agrees with empirical observation ofthese two Figures.

It should be noted that for the examples shown in FIGS. 14 to 18, nosignificant parameter correlations were used. As will be appreciated,the results generally indicate that the proposed method is a generallyaccurate one.

One of ordinary skill in the art would understand that mathematicalmethods and formulae described above are exemplary, and that othercomparable methods and formulae may be used without departing from thespirit and scope of the embodiments described above.

Although embodiments have been described above with reference to theaccompanying drawings, those of skill in the art will appreciate thatvariations and modifications may be made without departing from thespirit and scope thereof as defined by the appended claims.

1. A method of determining locations of at least two pointers in acaptured image frame, the method comprising: generating a verticalintensity profile (VIP) from the captured image frame, the VIPcomprising peaks generally corresponding to the at least two pointers;determining if the peaks are closely spaced and, if the peaks areclosely spaced: fitting a curve to the VIP; analyzing the fitted curveto determine peak locations of the fitted curve; and registering thepeak locations as the pointer locations.
 2. The method of claim 1,wherein if the peaks are determined not to be closely spaced, the methodfurther comprising: analyzing the VIP to determine the peak locations;and registering the peak locations as the pointer locations.
 3. Themethod of claim 1, wherein the fitting comprises: calculating anonlinear least squares fit for at least one model, each modelcomprising at least two peaks, each peak having at least one of arespective peak location, a respective peak half-width and a respectivepeak amplitude.
 4. The method of claim 3, wherein the nonlinear leastsquares fit comprises any one of a conjugate gradient algorithm, aLevenberg-Marquardt algorithm, and a nonlinear simplex algorithm.
 5. Themethod of claim 3, wherein said at least one model comprises a pluralityof models, each model in said plurality comprising a different number ofpeaks.
 6. The method of claim 5, wherein the fitting further comprises:calculating a goodness-of-fit value for each model; calculating anAkaike Information Criterion (AIC) value for each model; and determininga final model by comparing the goodness-of-fit values and the AICvalues, the final model being said fitted curve.
 7. The method of claim6, wherein the final model determined is the model having at least oneof a lowest goodness-of-fit value and a lowest AIC value.
 8. The methodof claim 7, further comprising: calculating a value of fit residuals foreach model, wherein the AIC value for each model is calculated based onthe value of the fit residuals.
 9. The method of claim 3, wherein the atleast one model is based on a point-by-point maximum of the VIP, thepoint-by-point maximum given by:max([f(x_(o), w, σ), g(x_(o), w, σ), h(x_(o), w, σ), . . . ]) where f(x,w, σ), g(x, w, σ) and h(x, w, σ) each represent an individual VIPfunction corresponding to a respective VIP peak, and where x_(o) is thepeak location and w is the half-width of each individual VIP function,and σ is instrumental profile width.
 10. The method of claim 9, whereineach VIP peak is proportional to an error function erf(x) given by:$\frac{1}{2} \cdot {\left( {{{erf}\left( \frac{x + w}{\sqrt{2}\sigma} \right)} - {{erf}\left( \frac{x - w}{\sqrt{2}\sigma} \right)}} \right).}$11. The method of claim 1, further comprising, prior to saiddetermining: comparing the VIP to a threshold; and identifying the peaksin the VIP based on the comparing.
 12. An interactive input system,comprising: at least one imaging assembly capturing image frames of aregion of interest; and processing structure in communication with theat least one imaging assembly, the processing structure being configuredto: generate a vertical intensity profile (VIP) from a captured imageframe, the VIP comprising peaks generally corresponding to locations ofat least two pointers in the captured image frame; and determine if thepeaks are closely spaced, and if the peaks are closely spaced to: fit acurve to the VIP; analyze the fitted curve to determine peak locationsof the fitted curve; register the peak locations as the pointerlocations.
 13. The system of claim 12, wherein the at least one imagingassembly comprises two or more imaging assemblies, the processingstructure being further configured to carry out said generating and saiddetermining for a respective image frame captured by each imagingassembly, and to: calculate the positions of the at least two pointersby triangulation based on the pointer locations.
 14. The system of claim13, wherein if the peaks are determined not to be closely spaced, theprocessing structure is further configured to: analyze the VIP todetermine the peak locations; and register the peak locations as thepointer locations.
 15. The system of claim 13, wherein, during thefitting, the processing structure is further configured to: calculate anonlinear least squares fit for at least one model, each modelcomprising at least two peaks, each peak having at least one of arespective peak location, a respective peak half-width and a respectivepeak amplitude.
 16. The system of claim 15, wherein the nonlinear leastsquares fit comprises any one of a conjugate gradient algorithm, aLevenberg-Marquardt algorithm, and a nonlinear simplex algorithm. 17.The system of claim 15, wherein said at least one model comprises aplurality of models, each model in said plurality comprising a differentnumber of peaks.
 18. The system of claim 17, wherein, during thefitting, the processing structure is further configured to: calculate agoodness-of-fit value for each model; calculate an Akaike InformationCriterion (AIC) value for each model; and determine a final model bycomparing the goodness-of-fit values and the AIC values, the final modelbeing the fitted curve.
 19. The system of claim 18, wherein the finalmodel determined is the model having at least one of a lowestgoodness-of-fit value and a lowest AIC value.
 20. The system of claim19, wherein the processing structure is further configured to: calculatea value of fit residuals for each model, wherein the AIC value for eachmodel is calculated based on the value of the fit residuals.
 21. Thesystem of claim 15, wherein the at least one model is based on apoint-by-point maximum of the VIP, the point-by-point maximum given by:max([f(x_(o), w, σ), g(x_(o), w, σ), h(x_(o), w, σ), . . . ]) where f(x,w, σ), g(x, w, σ) and h(x, w, σ) each represent an individual VIPfunction corresponding to a respective VIP peak, and where x_(o) is thepeak location and w is the half-width of each individual VIP function,and a is instrumental profile width.
 22. The system of claim 21, whereineach VIP peak is proportional to an error function erf(x) given by:$\frac{1}{2} \cdot {\left( {{{erf}\left( \frac{x + w}{\sqrt{2}\sigma} \right)} - {{erf}\left( \frac{x - w}{\sqrt{2}\sigma} \right)}} \right).}$23. The system of claim 13, wherein the processing structure is furtherconfigured to, prior to the determining: compare the VIP to a threshold;and identify the peaks in the VIP based on the comparing.
 24. Anon-transitory computer readable medium having embodied thereon acomputer program for determining locations of at least two pointers in acaptured image frame, the computer program comprising: program code forgenerating a vertical intensity profile (VIP) from the captured imageframe, the VIP comprising peaks generally corresponding to the at leasttwo pointers; and program code for determining if the peaks are closelyspaced and, if the peaks are closely spaced: program code for fitting acurve to the VIP; program code for analyzing the fitted curve todetermine peak locations of the fitted curve; and program code forregistering the peak locations as the pointer locations.